package com.urbanflow.vinci.main;


import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URISyntaxException;
import java.util.Iterator;
import java.util.List;

import org.json.simple.parser.ParseException;

import com.urbanflow.vinci.initializator.Initializator;
import com.urbanflow.vinci.controler.BotControler;
import com.urbanflow.vinci.gui.Fenetre;


public class Run {

	public static void main(String[] args) throws URISyntaxException {
		
		// Suppression du fichier de log avant demarrage
		
		String fichier = new StringBuilder().append(System.getProperty("user.dir")).append("/lancement_urban_flow.log").toString();
	    File fichier_log = new File(fichier);
	    fichier_log.delete();
	    
		//Test JUCH pour la requ�te de nouvelle partie
		//DialogManager dManager = new DialogManager("9d0b7187aac913ff314b553d6b731254", "775f95aafeb7b56f1b8e73511e9f3d8a6bbf27627edcd6588d49ba050aa48bad");
		//dManager.JoinGame(GameType.training);
		//Fin Test JUCH
		

		Fenetre fen = new Fenetre();

		try {
			Initializator init = Initializator.getInstance();
			init.initialize();
			BotControler.getInstance().demarrerNouvellePartie("9d0b7187aac913ff314b553d6b731254", "775f95aafeb7b56f1b8e73511e9f3d8a6bbf27627edcd6588d49ba050aa48bad");
//			ParcoursManager.getInstance().creerReseau(lesArrets);
//			List<Arret> lesArrets2 = new ArrayList<Arret>( init.getListeArrets());
//			ParcoursManager.getInstance().creerLesTrajets(lesArrets2.get(1), lesArrets2.get(4), null);
//			ParcoursManager.getInstance().reduireLeChemin();
//			System.out.println(ParcoursManager.getInstance().getLeCheminPrevu().toString());
			List<Ligne> lignes = init.getLignes();
			for(Ligne ligne : lignes){
				System.out.println("LIGNE: "+ligne.getIdLigne());
				Iterator<Arret> it = ligne.getMesArretsById().values().iterator();
				while(it.hasNext()){
					Arret arret = it.next();
					System.out.print("IDARRET= "+arret.getIdArret()+"  NOMARRET= "+arret.getNomArret()+" LIGNE=");
					List<Ligne> lignes2 = arret.getMesLignes();
					for(Ligne ligne2 : lignes2){
						System.out.print(ligne2.getIdLigne());
						System.out.print(" , ");
					}
					System.out.println("");
				}
			}
			for(Ligne ligne : lignes){
				System.out.println("LIGNE: "+ligne.getIdLigne());
				Iterator<Arret> it = ligne.getMesArretsById().values().iterator();
				while(it.hasNext()){
					Arret arret = it.next();
					System.out.print("IDARRET= "+arret.getIdArret()+"  NOMARRET= "+arret.getNomArret()+" HORAIRE=");
//					List<HoraireModele> horaires = arret.getMesHorairesModeles();
//					for(HoraireModele horaire : horaires){
//						System.out.print(horaire.getJour()+": ");
//						System.out.print(horaire.getHoraire().toString());
//						System.out.print(" , ");
//					}
					System.out.println("");
				}
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		// Lecture du fichier de log et affichage du resultat dans l'interface
		String chaine = null;
			try{
				InputStream ips=new FileInputStream(fichier);  
				InputStreamReader ipsr=new InputStreamReader(ips);
				BufferedReader br=new BufferedReader(ipsr);
				String ligne;
				while ((ligne=br.readLine())!=null){
					System.out.println(ligne);
					chaine+=ligne+"\n";
				}
				br.close(); 
				Fenetre interface_ = new Fenetre(chaine);
			}		
			catch (Exception e){
				System.out.println(e.toString());
			}
		
	}

}
